<?php
/**
 * 試合情報データコントローラモジュール
 */
require_once dirname(__FILE__) . '/../Controller.php';

/**
 * 試合情報データコントローラ
 */
class Models_Game_Controller extends Models_Controller
{
	/** 交替選手 */
	const KEY_KOTAI_MEMBER = "KOTAI_MEMBER";
	/** 選手ＩＤ */
	const KEY_PLAYER_ID = "PLAYER_ID";
	/** 選手リスト */
	const KEY_PLAYER_LIST = "PLAYER_LIST";
	/** 選手氏名 */
	const KEY_PLAYER_NAME = "PLAYER_NAME";
	/** スタメン */
	const KEY_STATING_MEMBER = "STATING_MEMBER";
	/** 得点選手情報リスト */
	const KEY_TOKUTEN_PLAYER_LIST = "TOKUTEN_PLAYER_LIST";
	/** アシスト選手情報リスト */
	const KEY_ASSIST_PLAYER_LIST = "ASSIST_PLAYER_LIST";
	/** 得点数 */
	const KEY_TOKUTEN_NUM = "TOKUTEN_NUM";
	/** 失点数 */
	const KEY_SITTEN_NUM = "SITTEN_NUM";

	/** @var カレントゲームＩＤ */
	protected $_CurrentGameId;

	/**
	 * 新規ゲーム情報設定
	 */
	public function create()
	{
		$this->_CurrentGameId = self::createId();
	}

	/**
	 * 得点選出追加
	 * @param  $TokutenNum 得点
	 * @param  $PlayerId 選手ＩＤ
	 * @param  $PlayerName 選手名
	 */
	public function addTokutenPlayer($TokutenNum, $PlayerId, $PlayerName)
	{
		$this->_aryDataSet[self::KEY_TOKUTEN_PLAYER_LIST][$TokutenNum][self::KEY_PLAYER_ID]
		= $PlayerId;
		$this->_aryDataSet[self::KEY_TOKUTEN_PLAYER_LIST][$TokutenNum][self::KEY_PLAYER_NAME]
		= $PlayerName;
	}

	/**
	 * 得点選手削除
	 * @param  $TokutenNum 得点
	 */
	public function deleteTokutenPlayer($TokutenNum)
	{
		/*** 指定得点に得点者情報がなければ削除の必要なし */
		if (isset($this->_aryDataSet[self::KEY_TOKUTEN_PLAYER_LIST][$TokutenNum])) {
			unnset( $this->_aryDataSet[self::KEY_TOKUTEN_PLAYER_LIST][$TokutenNum]);
		}
	}

	/**
	 * スターティングメンバー追加
	 * @param  $PlayerId 選手ＩＤ
	 * @param  $PlayerName 選手氏名
	 */
	public function addStartingMameber($PlayerId, $PlayerName)
	{
		/*** 念のためいったん削除 */
		$this->deleteStartingMember($PlayerId);

		$index = count($this->_aryDataSet[self::KEY_STATING_MEMBER][self::KEY_PLAYER_LIST]);
		$this->_aryDataSet[self::KEY_STATING_MEMBER][self::KEY_PLAYER_LIST][$index][self::KEY_PLAYER_ID]
		= $PlayerId;
		$this->_aryDataSet[self::KEY_STATING_MEMBER][self::KEY_PLAYER_LIST][$index][self::KEY_PLAYER_NAME];
	}

	/**
	 * スターティングメンバー削除
	 * @param  $PlayerId 選手ＩＤ
	 */
	public function deleteStartingMember($PlayerId)
	{
		$iCount = count($this->_aryDataSet[self::KEY_STATING_MEMBER][self::KEY_PLAYER_LIST]);
		$i = 0;
		/***
		 * 選手ＩＤ検索
		 */
		while ( $i < $iCount ) {
			/*** 選手ＩＤ一致判定 */
			if ( $this->_aryDataSet[self::KEY_STATING_MEMBER][self::KEY_PLAYER_LIST][$i][self::KEY_PLAYER_ID] == $PlayerId)
			{
				unset($this->_aryDataSet[self::KEY_STATING_MEMBER][self::KEY_PLAYER_LIST][$i]);
				return;
			}
			$i ++;
		}
	}

	/**
	 * 交替メンバー追加
	 * @param  $PlayerId 選手ＩＤ
	 * @param  $PlayerName 選手氏名
	 */
	public function addKotaiMember($PlayerId, $PlayerName)
	{
		/** 念のためいったん削除 */
		$this->deleteKotaiMember($PayerId);

		$index = count($this->_aryDataSet[self::KEY_KOTAI_MEMBER][self::KEY_PLAYER_LIST]);
		$this->_aryDataSet[self::KEY_KOTAI_MEMBER][self::KEY_PLAYER_LIST][$index][self::KEY_PLAYER_ID]
		= $PayerId;
		$this->_aryDataSet[self::KEY_KOTAI_MEMBER][self::KEY_PLAYER_LIST][$index][self::KEY_PLEYER_NAME]
		= $PlayerName;
		return;
	}

	/**
	 * 交替メンバー削除
	 * @param  $PayerId 選手ＩＤ
	 */
	public function deleteKotaiMember($PayerId)
	{
		$iCount = count($this->_aryDataSet[self::KEY_KOTAI_MEMBER][self::KEY_PLAYER_LIST]);
		/***
		 * 指定ＩＤ検索
		*/
		while ($i < $iCount) {
			/*** 選手ＩＤ一致判定 */
			if ( $this->_aryDataSet[self::KEY_KOTAI_MEMBER][self::KEY_PLAYER_LIST][$i][self::KEY_PLAYER_ID] == $PayerId)
			{
				unset($this->_aryDataSet[self::KEY_KOTAI_MEMBER][self::KEY_PLAYER_LIST][$i]);
				return;
			}
			$i ++;
		}
	}
}